package com.LachesismStorm.lachesism.member.service;

import com.LachesismStorm.lachesism.core.common.response.ResponsePage;
import com.LachesismStorm.lachesism.member.vo.*;
import com.LachesismStorm.lachesism.member.vo.dto.*;
import com.LachesismStorm.lachesism.member.vo.param.DatingEventParam;
import com.LachesismStorm.lachesism.member.vo.param.DatingForumParam;
import com.LachesismStorm.lachesism.member.vo.param.MemberParam;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author lachesism
 * @Date 2025-02-24 13:50
 **/
@Service
public interface DatingService {

    List<AreaList> geAllArea();

    ResponsePage<MemberDto> getUserList(MemberParam umsMember);

    void sendMessage(String message, Integer userId);

    List<String> getSwearing();

    ResponsePage<DatingChat> getChatList(MemberParam memberParam);

    void createEvent(DatingEvent datingEvent);

    ResponsePage<DatingEvent> getDatEventList(DatingEventParam datingEvent);

    void updateEvent(DatingEvent datingEvent);

    void eventApplication(DatingEventApplication application);

    List<DatingEventApplication> getEventApplicationList(DatingEvent datingEvent);

    ResponsePage<DatingEventDto> getMyEventApplicationList(DatingEventParam datingEvent);

    void publishForum(DatingForum forum);

    ResponsePage<DatingForum> getForumList(DatingForumParam forum);

    ResponsePage<DatingForum> getMyForumList(DatingForumParam forum);

    void editForum(DatingForum forum);

    void like(Integer id);

    DatingForumDto getForumDetail(Integer id);

    ResponsePage<DatingForum> getMyLike(DatingForumParam forum);

    void follow(Integer userId);

    ResponsePage<DatingFollow> getFollowList(DatingForumParam forum);

    List<DatingMessage> getMessageList();

    void addComment(DatingComments comments);

    void deleteComment(DatingComments comments);

    void chat(DatingChat chat);

    List<DatingChat> chatList(Integer chatUserId);

    void addSwearing(String word);

    void deleteSwearing(Integer id);

    ResponsePage<DatingSwearing> swearingList(DatingEventParam param);

    List<DatingCommentsDto> getForumComment(DatingComments comments);
}
